package com.iotmonitor.iot.service;


import com.iotmonitor.iot.domain.TbAlarm;
import com.iotmonitor.iot.domain.dto.AlarmMsg;
import com.iotmonitor.iot.domain.dto.DeviceInfoDTO;
import com.iotmonitor.iot.domain.dto.QuotaDTO;

import java.util.List;


/**
 * 报警配置Service接口
 * 
 * @author 1655
 * @date 2023-08-11
 */
public interface ITbAlarmService 
{
    /**
     * 查询报警配置
     * 
     * @param id 报警配置主键
     * @return 报警配置
     */
    public TbAlarm selectTbAlarmById(Long id);

    /**
     * 查询报警配置列表
     * 
     * @param tbAlarm 报警配置
     * @return 报警配置集合
     */
    public List<TbAlarm> selectTbAlarmList(TbAlarm tbAlarm);

    /**
     * 新增报警配置
     * 
     * @param tbAlarm 报警配置
     * @return 结果
     */
    public int insertTbAlarm(TbAlarm tbAlarm);

    /**
     * 修改报警配置
     * 
     * @param tbAlarm 报警配置
     * @return 结果
     */
    public int updateTbAlarm(TbAlarm tbAlarm);

    /**
     * 批量删除报警配置
     * 
     * @param ids 需要删除的报警配置主键集合
     * @return 结果
     */
    public int deleteTbAlarmByIds(Long[] ids);

    /**
     * 删除报警配置信息
     * 
     * @param id 报警配置主键
     * @return 结果
     */
    public int deleteTbAlarmById(Long id);

    /**
     * 告警日志查询
     * @return
     */
    List<?> queryAlarmLog(String alarmName, String deviceId, String start, String end);

    /**
     * 获取某一指标下的所有告警设置
     * @param quotaId 指标Id
     * @return
     */
    List<TbAlarm> getByQuotaId(Long quotaId);

    /**
     * 根据指标判断告警信息
     * @param quotaDTO
     * @return
     */
    TbAlarm verifyQuota(QuotaDTO quotaDTO);


    /**
     * 告警信息封装
     * @param deviceInfoDTO
     * @return
     */
    DeviceInfoDTO verifyDeviceInfo(DeviceInfoDTO deviceInfoDTO);
}
